home *** CD-ROM | disk | FTP | other *** search
- global gfxEffectsList, gfxTimeKeeper
-
- on gfx_Init
- gfxEffectsList = []
- gfxTimeKeeper = []
- repeat with n = 200 to 300
- sprite(n).puppet = 0
- end repeat
- end
-
- on gfx_Update theOffset
- repeat with n = 1 to count(gfxEffectsList)
- sprite(gfxEffectsList[n][2]).loc = gfxEffectsList[n][4] - theOffset
- case gfxEffectsList[n][1] of
- #smoke:
- gfx_updateSmoke(n)
- #tireTrack:
- gfx_updateTireTrack(n)
- #dust:
- gfx_updateSmoke(n)
- end case
- end repeat
- end
-
- on gfx_ClearAllEffects
- repeat with n = 200 to 300
- sprite(n).puppet = 0
- end repeat
- end
-
- on gfx_CreateEffect fxType, fxLoc, fxLifeTime, theOffset, fxRotation, creatorSpriteNum, bUseTimeKeeper
- if voidp(theOffset) then
- theOffset = point(0, 0)
- end if
- if voidp(bUseTimeKeeper) then
- bUseTimeKeeper = 1
- end if
- theSpriteNum = 0
- repeat with n = 200 to 300
- if sprite(n).puppet = 0 then
- theSpriteNum = n
- exit repeat
- end if
- end repeat
- if theSpriteNum <> 0 then
- bCreateEffect = 0
- if bUseTimeKeeper then
- bCreateEffect = gfx_checkTimeKeeper(fxType, creatorSpriteNum)
- else
- bCreateEffect = 1
- end if
- if bCreateEffect then
- newEffect = [fxType, theSpriteNum, the ticks + fxLifeTime, fxLoc]
- gfx_addEffect(newEffect)
- sprite(theSpriteNum).puppet = 1
- sprite(theSpriteNum).member = getMember(fxType)
- sprite(theSpriteNum).rotation = fxRotation
- sprite(theSpriteNum).blend = 60
- sprite(theSpriteNum).ink = 36
- sprite(theSpriteNum).loc = fxLoc - theOffset
- sprite(theSpriteNum).width = member(sprite(theSpriteNum).member).width
- sprite(theSpriteNum).height = member(sprite(theSpriteNum).member).height
- if bUseTimeKeeper then
- gfx_registerWithTimeKeeper(creatorSpriteNum, fxType, the ticks)
- end if
- end if
- end if
- end
-
- on getMember fxType
- case fxType of
- #dust:
- return member("Dust")
- #smoke:
- return member("Smoke")
- #tireTrack:
- return member("Skid")
- end case
- end
-
- on gfx_addEffect newEffect
- add(gfxEffectsList, newEffect)
- end
-
- on gfx_RemoveEffect effectNum
- deleteAt(gfxEffectsList, effectNum)
- end
-
- on gfx_updateSmoke theEffectNum
- theSpriteNum = gfxEffectsList[theEffectNum][2]
- theLifeTime = gfxEffectsList[theEffectNum][3]
- sprite(theSpriteNum).width = sprite(theSpriteNum).width + 2
- sprite(theSpriteNum).height = sprite(theSpriteNum).height + 2
- sprite(theSpriteNum).blend = sprite(theSpriteNum).blend - 2
- sprite(theSpriteNum).rotation = sprite(theSpriteNum).rotation + 10
- if (the ticks > theLifeTime) or (sprite(theSpriteNum).blend < 5) then
- gfx_RemoveEffect(theEffectNum)
- sprite(theSpriteNum).puppet = 0
- end if
- end
-
- on gfx_updateTireTrack theEffectNum
- theSpriteNum = gfxEffectsList[theEffectNum][2]
- theLifeTime = gfxEffectsList[theEffectNum][3]
- sprite(theSpriteNum).blend = sprite(theSpriteNum).blend - 3
- if (the ticks > theLifeTime) or (sprite(theSpriteNum).blend < 5) then
- gfx_RemoveEffect(theEffectNum)
- sprite(theSpriteNum).puppet = 0
- end if
- end
-
- on gfx_checkTimeKeeper theEffect, theSpriteNum
- repeat with n = 1 to count(gfxTimeKeeper)
- if gfxTimeKeeper[n][1] = theSpriteNum then
- if gfxTimeKeeper[n][2] = theEffect then
- if the ticks > (gfxTimeKeeper[n][3] + 10) then
- deleteAt(gfxTimeKeeper, n)
- return 1
- else
- return 0
- end if
- next repeat
- end if
- deleteAt(gfxTimeKeeper, n)
- return 1
- end if
- end repeat
- return 1
- end
-
- on gfx_registerWithTimeKeeper theSpriteNum, theEffect, theTime
- add(gfxTimeKeeper, [theSpriteNum, theEffect, theTime])
- end
-